/*
 * 插件名称 : 左右无缝切换banner插件
 * 更新时间 : 2016-3-28 V1.0
 * 作者:小缘-hxxc
 * 调用方法 : var banner = new Banner({
 				配置参数
				b_element : ".banner"
			} , function(obj){
				这个是回调函数
			});
 *	参数说明(备注为true的是不可缺少的参数 , false为可选参数)
		b_element : true (element banner容器盒子)
		animate_date : false (number 轮播切换动画过度时间  默认500)
		auto_date : false (number 轮播自动切换的时间 默认5000)
		auto_switch : false (boolean 是否自动切换默认true)
		but : false (boolean 是否添加列表按钮 默认true)
		but_class : (string 列表按钮样式 默认为cur 如需调整可以修改css或者自行另外添加class名)
		callback : (function 这个是每次切换后执行的回调函数 可以用来给每个li里面的元素添加动画   接收参数obj为当前的li)
 */
(function(){
	function Banner(data , callback){
		this.b_element = $(data.b_element);
		this.li = $(".banner-list li",this.b_element);
		this.width = this.b_element.width();
		this.animate_date = data.animate_date ? data.animate_date : 500;
		this.auto_date = data.auto_date ? data.auto_date : 5000;
		this.auto_switch = data.auto_switch == undefined ? true : data.auto_switch;
		this.but = data.but == undefined ? true : data.but;
		this.but_calss = data.but_calss ? data.but_calss : "cur";
		this.callback = callback;
		this.list_btn = "";
		this.index = 0;
		this.p_index = 0;
		this.init();
		this.event();
	};
	//初始化
	Banner.prototype.init = function(){
		if(this.but){
			var element = "";
			for(var i=0; i<this.li.length; i++){
				element += '<a href="javascript:;" '+ (i == 0 ? 'class='+ this.but_calss +'' : "") +'></a>';
			};
			//添加元素
			this.b_element.append('<div class="list-btn">'+element+'</div>');
			this.list_btn = $(".list-btn" , this.b_element);
			this.list_btn.css("margin-left" , "-"+(this.list_btn.innerWidth() / 2) +"px");
			this.list_btn = this.list_btn.find("a");
		};
		this.auto_switch ? (this.auto_animate()) : "";
	};
	//绑定事件
	Banner.prototype.event = function(){
		var th = this;
		if(th.but){
			th.list_btn.on("mouseover" , function(){
				th.index = $(this).index();
				th.setcur();
				th.index > th.p_index ? (th.left()) : (th.index == th.p_index ? "" : th.right());
			});
		};
		//右
		if(this.b_element.find(".btn-right")){
			th.b_element.find(".btn-right").on("click" , function(){
				console.log(th.b_element)
				th.switch();
			})
		};
		//左
		if(th.b_element.find(".btn-left")){
			th.b_element.find(".btn-left").on("click" , function(){
				th.index--;
				th.index = th.index < 0 ? th.li.length - 1 : th.index;
				th.right();
				th.but && th.setcur();
			})
		};
		//hover暂停
		th.b_element.hover(function(){
			clearInterval(th.timer);
		},function(){
			th.auto_switch && th.auto_animate();
		});
	};
	//left
	Banner.prototype.left = function(){
		this.li.eq(this.p_index).animate({"left" : "-"+this.width+"px"} , this.animate_date);
		this.li.eq(this.index).css("left" , this.width+"px").animate({"left" : 0} , this.animate_date);
		this.p_index = this.index;
		//回调函数
		this.callback && this.callback(this.li.eq(this.index));
	};
	//right
	Banner.prototype.right = function(){
		this.li.eq(this.p_index).animate({"left" : this.width} , this.animate_date);
		this.li.eq(this.index).css("left" , "-"+this.width+"px").animate({"left" : 0} , this.animate_date);
		this.p_index = this.index;
		//回调函数
		this.callback && this.callback(this.li.eq(this.index));
	};
	//自动轮播
	Banner.prototype.switch = function(){
		this.index++;
		this.index = this.index > this.li.length - 1 ? 0 : this.index;
		this.left();
		this.but && this.setcur();
	};
	//自动切换
	Banner.prototype.auto_animate = function(){
		var th = this;
		th.timer = setInterval(function(){
			th.switch();
		} , th.auto_date);
	};
	//设置原点
	Banner.prototype.setcur = function(){
		this.list_btn.eq(this.index).addClass("cur").siblings("a").removeClass("cur");
	};
	//接口 
	window.Banner = Banner;
})();